package com.zwl.lib_base.base

import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.FlowCollector
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.flowOn

/**
 * 仓库层 Repository 基类
 *
 */
open class BaseRepository {

    //我们定义了一个request函数，它接受一个名为requestBlock的lambda表达式作为参数。
    //这个lambda表达式接受一个FlowCollector<T>类型的参数，并且没有返回值（Unit）。
    //requestBlock内部，你可以调用FlowCollector的emit方法来发射元素。
    protected fun <T> request(
        requestBlock: suspend (FlowCollector<T>) -> Unit)
            : Flow<T> {
        return flow(requestBlock).flowOn(Dispatchers.IO)
    }
}